Fulfillment of cloud service using marketplace system

ABSTRACT

In some examples, a marketplace system receives information from multiple service providers as part of onboarding of the multiple service providers with the marketplace system. Responsive to the onboarding, a cloud service created by the respective service provider is synchronized with the marketplace system. A marketplace catalog is linked with catalogs of the service providers, the linking including aggregating content of the catalogs into the marketplace catalog. Responsive to a request from a requester received through a portal of the marketplace system, at least one cloud service is identified using the marketplace catalog based on at least one search criterion of the request.

CROSS-REFERENCE TO RELATED APPLICATION

This claims the benefit under 35 U.S.C. §119(e) of U.S. ProvisionalApplication No. 62/074,310, filed Nov. 3, 2014, which is herebyincorporated by reference.

BACKGROUND

A cloud service can refer to a service that includes infrastructureresources (a compute resource, a storage resource, a networkingresource, etc.) connected with each other and/or platforms. Suchinfrastructure resources can collectively be referred to as “cloudresources.” A host (also referred to as a cloud service provider) may,as examples, provide Software as a Service (SaaS) by hostingapplications or other machine-readable instructions; Infrastructure as aService (IaaS) by hosting equipment (servers, storage components,network components, etc.); or a Platform as a Service (PaaS) by hostinga computing platform (operating system, hardware, storage, and soforth).

A public cloud is a place where IaaS or PaaS is offered by a cloudservice provider. The services of the public cloud can be used to deployapplications. In other examples, a public cloud can also offer SaaS,such as in examples where the public cloud offers the SaaS as a utility(e.g. according to a subscription or pay as you go model).

In other examples, an IaaS can be deployed on premises of a customer,such as the customer's data center. Such an arrangement is referred toas a private cloud. A managed cloud is a private cloud that is managedby a third party or hosted and managed by a third party (if the privatecloud is managed by a third party, then the managed cloud is referred toas a virtual private cloud).

In further examples, IaaS can be provided by traditional servers or datacenters.

In other cases, a cloud used by a project or a customer can be acombination of all the above (e.g. applications have pieces in differentcloud deployments or applications can be moved to different clouds ordeployment models). Such a cloud is referred to as a hybrid cloud.

Application stacks (including a platform and operating system as well asother layers) in a cloud infrastructure can also be considered as cloudservices. They may be “used” or offered as a service.

BRIEF DESCRIPTION OF THE DRAWINGS

Some implementations are described with respect to the followingfigures.

FIG. 1 is a flow diagram of an example process performed by amarketplace system, according to some implementations.

FIG. 2 is a block diagram of an example arrangement including serviceproviders and a marketplace system according to some implementations.

FIG. 3 is a flow diagram of an example process including tasks performedby a service provider and a marketplace system according to someimplementations.

FIGS. 4 and 5 are block diagrams of example systems according to variousimplementations.

DETAILED DESCRIPTION

A “service provider” can refer to a business concern, an educationalorganization, a government agency, an individual, or any other entity,that offers (sells or offers for free) cloud services to others. Cloudservices offered by a service provider can be referred to as“offerings,” which can be presented to users who can order suchofferings.

A service provider in a first geographic region (e.g. a first country)can struggle to reach customers in a second geographic region (e.g. asecond country) due, for example, to lack of marketing reach of theservice provider in the second geographic region. As a result, theaddressable market and revenue potential of the service provider can berestricted.

In accordance with some implementations of the present disclosure, anintegrated marketplace system is provided to present offerings ofmultiple service providers to customers wherever the customers arelocated. Although reference is made to extending the reach of serviceproviders to customers at different locations, it is noted thattechniques or systems according to some implementations of the presentdisclosure can achieve other goals or purposes. The integratedmarketplace system is able to onboard different service providers, whereonboarding can include signing up the service providers and deliveringtools to the service providers to allow the service providers to presenttheir offerings (cloud services) through the integrated marketplacesystem, and also to perform updates of the offerings in response toupdates at the marketplace system. Also, the marketplace system providessearch capabilities to allow customers to use the marketplace system tosearch for offerings of the service providers.

FIG. 1 is a flow diagram of an example process that can be performed bythe integrated marketplace system according to some implementations. The“marketplace system” can refer to a system (made up of one or multiplecomputers, for example) of an integrated marketplace provider. Themarketplace system receives (at 102) information from multiple serviceproviders as part of onboarding of the multiple service providers withthe marketplace system. The onboarding of each service provider isinitiated in response to the service provider signing up with themarketplace system, and the service provider providing information aboutitself to the marketplace system.

As examples, the received information can include any or somecombination of the following: an identity or other information about aservice provider; a location where the service provider is located;information, such as a uniform resource locator (URL) or other referenceinformation, of a website and/or catalog of the service provider;information relating to fulfillment of a cloud service provided by theservice provider; or any other information that can be used by themarketplace system to perform catalog aggregation, search, and cloudservice fulfillment. An individual catalog from a service providerdescribes respective cloud services offered by the service provider.Catalog aggregation can be performed by the marketplace system toaggregate (i.e. combine) the content of the individual catalogs, to forman aggregate catalog. Example techniques to aggregate catalogs aredescribed in U.S. Publication No. 2015/0161681, entitled “FULFILLING AREQUEST BASED ON CATALOG AGGREGATION AND ORCHESTRATED EXECUTION OF ANEND-TO-END PROCESS.”

As an example, an administrator of the service provider can sign-up torequest participation with the marketplace system by submitting arequest and various information of the service provider, which can beincluded in supporting documents that describe capabilities of theservice provider, legal information about the service provider, and soforth. Once the request and supporting information are received from theservice provider, the marketplace system can review the receivedsupporting information, and a decision can be made regarding whether ornot to approve the service provider. The approval decision can be mademanually by an administrator of the marketplace provider, oralternatively, can be automatically made by the marketplace system basedon the received supporting information.

Responsive to the onboarding (and more specifically, responsive toapproval of each respective service provider), a cloud service (or cloudservices) created by the respective service provider is synchronized (at104) with the marketplace system. In addition, the marketplace systemcan provide unique login information to each respective service providerthat has been approved (the login information can include logininformation for personnel of the respective service provider), so thatthe respective service provider (or its personnel) can login to themarketplace system to perform registration with the marketplace system,as discussed further below.

In some examples, in response to onboarding each respective serviceprovider, the marketplace system downloads a package to the respectiveservice provider, where the downloaded package creates and synchronizesthe cloud service (or cloud services) created by the respective serviceprovider with the marketplace system.

The downloaded package can allow each respective service provider tocreate cloud services that can be offered through the marketplacesystem. In addition, the downloaded package can synchronize the createdcloud services with the marketplace system, where “synchronizing” acloud service with the marketplace system can refer to marketplacesystem being made aware of the cloud service and being able to offer thecloud service through the marketplace system.

The downloaded package can be in the form of a “gateway” code (includingmachine-readable instructions), which can include one or multiple toolsthat are executable by a platform of a service provider. The platform ofthe service provider can include one or multiple computers.

In other examples, instead of downloading a package to a respectiveservice provider, it is also possible for a service provider to developits own catalog against the aggregated catalog. In such examples, theindividual catalogs of service providers and the aggregate catalog maybe synchronized using an aggregation application programming interface(API), such as described in U.S. Publication No. 2015/0161681. Once anindividual catalog of a service provider is synchronized with theaggregate catalog, the service provider can use basic tools hosted bymarketplace system to manage offerings to synchronize with the aggregatecatalog.

The marketplace system further links (at 106) a marketplace catalog(which is the aggregate catalog noted above) with individual catalogs ofthe service providers that have been onboarded with the marketplacesystem. The linking includes aggregating content of the individualcatalogs into the marketplace catalog. Each individual catalog describesrespective cloud services offered by the corresponding service provider.The individual catalogs of different service providers can bedynamically discovered by the marketplace system as the serviceproviders are onboarded. The marketplace catalog can include metadatabased on tags of the cloud services offered by the service providers. Atag of a cloud service can include information related to the cloudservice, such resources of the cloud service, a location of the cloudservice, and other information (discussed further below) likeinformation useful for search (based on a prescribed data model) or forfulfillment of a cloud service.

The metadata can be used during a search for cloud services, to findcloud services that match a request of a requester, and to providepricing information regarding the cloud services that have been found.

A catalog can include catalog items, where each catalog item can includea collection of information that describes characteristics of arespective cloud service (or cloud services), as well as otherinformation related to the cloud service(s). The catalog can have apredetermined format for information relating to offerings and for someof the metadata, and can include one or multiple documents that containthe corresponding information relating to the cloud service(s). Theinformation describing characteristics of a cloud service in a catalogcan describe features of the offering. Other information included in acatalog can any or some combination of the following information: accesscontrol information that specifies entities with permission to accessthe catalog, such as an identity of customers or a class of customers orother entities who are permitted to see and perform actions such asordering cloud service(s) of the catalog, commercial terms of the cloudservice(s) (such as the price or cost of a cloud service, options of thecloud service, as well as other terms), constraints relating to thecloud service(s), and other information. The price can be a non-zero orzero value, and in some examples, the price can be related to anaccounting operation of an enterprise. Alternatively, a pointer can beincluded in the catalog to refer to a system that is able to determine aprice or a flow that performs the determination of the price. Theinformation in the catalog can also specify information regarding howthe cloud service(s) of the catalog is to be presented in a portal (thatpresents a user interface)—the user interface (UI) presented by theportal is how customers can view the cloud service(s).

Responsive to the request from the requester received through a portalof the marketplace system, the marketplace system identifies (at 108),using the marketplace catalog and based on at least one search criterionof the request, at least one cloud service provided by a given serviceprovider of the multiple service providers. The request causes themarketplace system to perform a search of the marketplace catalog. Inaddition to being able to search the marketplace catalog, a customer canalso browse the marketplace catalog. The portal of the marketplacesystem can provide an interface through which customers (individualusers or tenants such as enterprises that include multiple users) canaccess the marketplace system to search for offered cloud services (fromthe multiple service providers that have been onboarded to themarketplace system). The portal can cause presentation of a UI at adevice of a customer, where the UI allows the customer to submit arequest to the marketplace system. The device of the customer caninclude a desktop computer, a notebook computer, a tablet computer, asmart phone, or any other electronic device. Note that different userswith different roles in different organizations or from differenttenants can view different subsets of the marketplace catalog andpossibly different processes.

The marketplace system can cause (at 110) fulfillment of the request,where the fulfillment includes provisioning, to the requester, cloudresources of the identified at least one cloud service for access by therequester.

The fulfillment of the request can be accomplished using one of severaldifferent techniques. In one type of technique (indirect fulfillmenttechnique), the fulfillment of the request can be accomplished byredirecting the requester to a given service provider of the identifiedat least one offering so that the given service provider can fulfill therequest. When each service provider provides an offering (referred to asan “abstract offering” as discussed further below) that is related to acloud service to the marketplace system, the service provider can alsoprovide, as an attribute of the offering, a reference (e.g. a pointer orany other information that allows a respective cloud service to belocated) to the cloud service. The pointer can include a uniformresource locator (URL) that refers to a location of the cloud service,which can be accessible over a network (e.g. Internet or other network).In other examples, the reference can include an Internet Protocol (IP)address or any other type of identifier. In examples where the referenceis a URL, the requester can be directed to the URL, which can direct therequester to a portal of the given service provider of the identified atleast one offering that matches the request. The requester can then usethe requester's credentials (e.g. login information) to access theservice provider's portal to request access to the identified cloudservice.

In another type of technique of fulfilling the request, the fulfillmentof the request can be accomplished by performing direct fulfillment ofthe request by the marketplace system on behalf of the given serviceprovider of the identified at least one offering that matches therequest. The direct fulfillment by the marketplace system can beaccomplished in one of several ways, including those discussed aboveaccording to some examples.

A first direct fulfillment technique involves a service controller atthe marketplace system performing a remote fulfillment of the requestedcloud service. An example of a service controller is a Cloud ServiceAutomation (CSA) controller from Hewlett-Packard (HP), such as CSARelease 4.5. Although reference is made to the CSA controller as anexample of a service controller, it is noted that other differentservice controllers can be employed in other implementations. Theservice controller can be used to provision a cloud service on demand,and subsequently, to manage the cloud service during execution of thecloud service.

A second direct fulfillment technique involves using a reference to acloud service (e.g. in the form of a pointer such as a URL) to call, bythe marketplace system, an application programming interface (API) toprovision the cloud service. A call to the API by the marketplace systemcauses a service controller at a platform of the service provider to beinvoked. In some examples, the service controller can be created by thedownloaded package (in the form of a gateway code, for example) that hasbeen provided from the marketplace system to a respective serviceprovider's platform.

With the direct fulfillment technique discussed above to performfulfillment on behalf of a requester, management and authentication ofthe requester by the marketplace system is performed, which in someexamples can be accomplished by performing a single sign-on with thedifferent cloud service providers that have been onboarded with themarketplace system.

FIG. 2 is a block diagram of an example arrangement that includes anintegrated marketplace system 200 according to some implementations ofthe present disclosure. The example arrangement of FIG. 2 also includesvarious service providers (1 to N, N>1), where each service provider isassociated with a respective service provider platform 202-1 to 202-N(which can be implemented with one or multiple computers and can includevarious cloud resources useable to provide cloud services to customers204).

The marketplace system 200 includes an onboarding engine 206, a catalogaggregation engine 208, a fulfillment engine 210, and a portal engine212. An “engine” can include processing hardware, such as amicroprocessor, a core of a multi-core microprocessor, amicrocontroller, a programmable gate array (PGA), an applicationspecific integrated circuit (ASIC), or any other processing hardware. An“engine” can include just the processing hardware, or a combination ofthe processing hardware and machine-readable instructions executable onthe processing hardware.

The onboarding engine 206 manages the onboarding, including sign-up, byeach of the service providers 1 to N, as discussed above in connectionwith task 102 of FIG. 1. As shown in FIG. 2, each service provider 1 toN can perform a respective sign-up process 214-1 to 214-N, respectively,with the onboarding engine 206. As discussed above, as part of thesign-ups, the service providers 1 to N provide various informationregarding the service providers to the onboarding engine 206, which isuseable to determine whether or not each respective service provider isapproved to be onboarded to the marketplace system 200.

In some examples, the onboarding engine 206 can provide a web page or aweb application at the marketplace system 200. The web page or webapplication can be used to perform onboarding of a new service provider.In further examples, the onboarding engine 206 can perform onboarding ofusers (e.g. customers 204) of the marketplace system 200 (such as incases where direct fulfillment can be performed). To onboard a user, theuser signs up with the onboarding engine 206, and the user can beprovided with a user identifier and other credentials to provideidentity management.

Responsive to the approval of the service providers 1 to N by anadministrator or by the onboarding engine 206, the onboarding engine 206can download (206-1 to 206-N) gateway packages to the respectiveplatforms 202-1 to 202-N of the service providers 1 to N. The downloadedgateway packages include the packages downloaded according to task 104discussed above.

Each gateway package can create and synchronize cloud services) of therespective service providers with the marketplace system 200. Also, asnoted above, each gateway package can cause creation of a servicecontroller at the service provider platform in some examples.

Note that the downloading of the gateway packages is performed in someimplementations, but may be omitted in other implementations. In suchlatter implementations, code already provided at the service providerscan interact with the marketplace system 200.

As noted above, the marketplace system 200 can provide unique logininformation to each respective service provider that has been approved,so that the respective service provider can login to the marketplacesystem to perform registration with the marketplace system 200. As partof the registration, each service provider logs in, using its uniquelogin information, with the marketplace system 200 and registersinformation about a gateway produced by a respective downloaded gatewaypackage installed at the corresponding service provider platform. Thegateway that is produced by the respective downloaded gateway packagecan include one or multiple tools, such as a tool to create andsynchronize cloud services, and/or the service controller discussedabove. The registered information for the gateway can include an address(e.g. IP address) of the gateway, identifiers of catalogs of the serviceprovider that are to be aggregated into a marketplace catalog 218, andother information.

Associated with the registration by the service providers is the dynamicdiscovery of the individual catalogs of the service providers by themarketplace system 200. The marketplace system 200 can identify theindividual catalogs of the service providers, which can then be providedto the catalog aggregation engine 208 to aggregate the content of theindividual catalogs, as discussed below.

In response to the registered information from each given serviceprovider, the onboarding engine 206 accesses a data model 220 (alsoreferred to as a marketplace data model) stored in the marketplacesystem 200 to provide information, based on the data model 220, to thegiven service provider. In some examples, the onboarding engine 206 cansend template 222-1 to 222-N to the respective service providers 1 to N.

The templates 222-1 to 222-N are based on a current active version ofthe data model. Each service provider can create offerings (relating tocloud services) based on the respective template received from themarketplace system 200. The offerings are “abstract” offerings. An“abstract offering” from a service provider is not actually the realcloud service provided by the service provider, but rather arepresentation of the cloud service. The attributes (also referred totags) of the representation of the cloud service include attributes ofthe data model 220. Information 224-1 to 224-N relating to the abstractofferings can be provided by the respective service providers 1 to N.The information 224-1 to 224-N relating to the offerings can include thetags of each abstract offering.

The attributes of the data model 220 can include any or some combinationof the following attributes. Generally, in some implementations,attributes can include functional attributes, operational attributes,and non-functional attributes. A functional attributes can refer to adefinition of the offering itself, for example, a virtual machine, aprocessor, a memory, and so forth. An operational attribute can relateto fulfillment of an offering, such as data (a URL, etc.) to be used toinstantiate an offering. A non-functional attribute can express aproperty an offering or service provider, such as the jurisdiction ofthe service provider, a certification of the service provider oroffering, a (geo-)location of the service provider or offering, aservice level agreement (SLA), and so forth.

In other implementations, attributes can be defined in a differentmanner, such as in the following manner. A fulfillment attribute isrelated to resources being provided by the service provider. Forexample, a fulfillment attribute for a server computer (a type ofresource) can include a number of microprocessor cores and/or a capacityof a memory. A fulfillment attribute for a communication node (anothertype of resource) can include a bandwidth of the communication node. Afulfillment attribute for a microprocessor (another type of resource)can indicate a operational frequency of the microprocessor. Otherexample fulfillment attributes can be provided for other resources.

Another attribute of the data model 220 is a spatial attribute, whichcan indicate a location of datacenter where a service provider canimplement resources for cloud services. The spatial attribute can beexpressed as a distance (e.g. distance from the location of a requesterand the location of the datacenter).

A further attribute of the data model 220 is a service level attributethat describes a service level agreement (SLA) associated with a cloudservice and/or a capacity of the cloud service. An SLA can specify atarget service level that the cloud service is to meet. A capacity ofthe cloud service can refer to a capacity of the cloud service toperform processing (e.g. the amount of data that the cloud service canprocess within a time interval, a rate of processing, etc.).

Another attribute of the data model 220 is a attribute that can identifya location of a service provider, or a jurisdiction (e.g. country,state, province, etc.) of the service provider. This other attribute canalso include information pertaining to a certification of the serviceprovider with a relevant government agency.

A policy attribute of the data model 220 specifies a policy governing acloud service provided by a service provider. For example, a policy canrefer to a policy dictated by a government agency or jurisdiction, apolicy dictated by an enterprise, and so forth. A policy can alsospecify information that an instance of a cloud service is to complywith, such that the policy can be used for poicy-guided fulfillment.

As discussed further below, the attributes of the data model 220 areuseable to perform search and ranking of cloud services identified inresponse to requests from requesters (e.g. the customers 204) submittedto the marketplace system 200.

In response to the information 224-1 to 224-N regarding offerings arereceived by the marketplace system 200 and information identifyingindividual catalogs of the service providers 1 to N, the catalogaggregation engine 208 can aggregate the contents of the individualcatalogs into the marketplace catalog 218. Aggregating the content of anindividual catalog into the marketplace catalog 218 can refer to addingthe content of the individual catalog into the marketplace catalog 218.Example techniques of aggregating catalogs into an aggregate catalog areprovided in U.S. Publication No. 2015/0161681. As additional informationis received from a service provider, the content of the catalog of theservice provider can be aggregated into the marketplace catalog 218.

Tags included in the information 224-1 to 224-N relating to theofferings from the service providers 1 to N can be included in cloudservice metadata 219 that is part of or otherwise associated with themarketplace catalog 218. The metadata 219 is used during a search of themarketplace catalog 218 to find cloud services that match a request froma requester.

Note that a respective information 224-1 or 224-N regarding an abstractoffering can be published by a respective service provider to themarketplace system 200 each time the respective service provider has tomake a change in the respective service provider's offered cloudservice(s), such as a price change, or fulfillment change, or a changeto any of the attributes of the data model 220 noted above. Such changescan cause the cloud service metadata 219 of the marketplace catalog 218to be updated.

In addition, in response to a change of the data model 220 to a newversion, the marketplace system 200 can provide to the service providers1 to N, information relating to the new version of the data model 220,including any changes in the attributes of the data model 220. Inresponse to receiving the information regarding the change of the datamodel 220, the service providers 1 to N can update their abstractofferings and can send updated information 224-1 to 224-N for theupdated abstract offerings to the marketplace system 200.

The portal engine 212 can provide a search-and-rank feature according tosome implementations of the present disclosure. The portal engine 212can present a search UI 226, which can be provided to and displayed atthe device of each requester (e.g. customer 204).

The search UI 226 includes fields in which a customer 204 can entersearch criteria for a cloud service. In response to activation of acontrol button (or other UI element) in the search UI 226, a request isgenerated by the search UI 226 and submitted to the portal engine 212,which performs a search using the entered search criterion (or searchcriteria) against the cloud service metadata 219 of the marketplacecatalog 218. The search criterion (or search criteria) can include anyof the attributes of the data model 220 discussed above, and/or anyother attribute. For example, attributes applicable to the order caninclude a date when the cloud service(s) is (are) to be provided (e.g.start and end dates), a total maximum price the customer 204 is willingto pay (across the service duration for the order), any preferencesregarding service providers (e.g. an include list of one or multipleservice providers preferred by the customer 204, or an exclude list ofone or multiple service providers not preferred by the customer 204).

Identified cloud services responsive to the request can be presented toa customer 204 in the search UI 226. The search performed by the portalengine 212 can identify individual cloud services or bundles of cloudservices that match the search criterion (or search criteria) of therequest.

The customer 204 can select, from among the identified cloud services,the cloud service(s) of interest to the customer 204, which causes anelectronic shopping cart to be populated with the selected cloudservice(s). In some examples, a cloud service(s) dependent upon theselected cloud service(s) can also be suggested to the customer 204. Thecustomer 204 can then checkout from the shopping cart.

In some implementations, the portal engine 212 can also rank theidentified cloud services that match the request. Each identified cloudservice can be assigned a rank indication, e.g. a value indicating thecloseness of the identified cloud service to the search criterion (orsearch criteria).

In response to checkout from the shopping cart, information identifyingthe checked out cloud service(s) can be provided to the fulfillmentengine 210, which can cause fulfillment of the request for the checkedout cloud service(s), using one of the several fulfillment techniquesdiscussed above. Although not shown in FIG. 2, if an indirectfulfillment technique is used, then the fulfillment engine 210 canredirect the requester to the portal of the respective service provider.

FIG. 3 is a flow diagram of processes of a service provider 300 and ofthe marketplace system 200, according to further implementations.Details regarding various tasks of FIG. 3 have been discussed furtherabove.

The service provider 300 performs sign-up (at 302), to performonboarding (at 304) with the marketplace system 200. In response to theonboarding, the marketplace system 200 downloads (at 306) a gatewaypackage to the service provider 300. The service provider 300 installs(at 308) the downloaded gateway package at the service provider platformof the service provider. In other implementations, the downloading ofthe package is not performed; rather, the service provider 300 canconnect its individual catalog to the marketplace catalog.

The service provider 300 registers (at 310) with the marketplace system200. The registering causes performance of a registration process asdiscussed further above. Note that the registration can be performedprior to the download and install tasks (306 and 308 in FIG. 3).

Using the data model 220, the marketplace system 200 produces (at 312) atemplate, which is sent (at 314) to the service provider 300. Note thatthe data model 220 can be created by an administrator of the marketplacesystem 200. The created data model can be one of two types, in someexamples: (1) a first type that provides an attribute of a new cloudservice, or (2) a second type that updates an attribute of an existingcloud service. The template can define a standard set of informationdata, metadata, and/or attributes that can be used to describe differentkinds of abstract offerings. A template can also be referred to as aservice taxonomy definition. Service providers can use the same set oftemplates to enable comparison between offerings.

The service provider 300 creates (at 316) an abstract offering based onthe template, and the abstract offering is sent (at 318) to themarketplace system 200. Using the registration information and theinformation of the abstract offering, the marketplace system 200aggregates (at 320) an individual catalog of the service provider 300into the marketplace catalog (218 in FIG. 2) and updates the cloudservice metadata (219 in FIG. 2).

The marketplace system 200 presents (at 322) a search UI (e.g. 226 inFIG. 2), through which a requester can submit a request for a cloudservice. In response to the request, the marketplace system 200 performs(at 324) a search and rank process. In some examples, the search andrank process can be performed by a separate search server computer 325(or multiple separate search server computers 325). A separate searchserver computer 325 can refer to a search server computer that isseparate from the platform of the marketplace system 200. In someexamples, a separate search server 325 can be a plug-in server computerto the marketplace system 200. A plug-in server computer can refer to aserver computer that can be selectively and dynamically made available(added) to the marketplace system 200. The dynamic plug-in feature ofsearch server computers allows for a scalable search deployment whereadditional search processing resources can be provided to themarketplace system 200 in response to demand.

Results of the search and rank process are returned (at 326) by themarketplace system 200. In some examples, the search results can beevolving search results that can become eventually consistent over time.In other words, the user experiences an interactive response as thesearch results are returned. In the beginning, the user may see rawun-ranked search results. As the ranking is performed, the searchresults may be re-ordered, such that the search results the user seesinitially may be different from the search results after the search andrank has completed. In this way, the user can get instant feedbackinstead of waiting for the overall search and rank process to beconcluded.

Based on selections of cloud services in the results made by therequester, the marketplace system 200 can then perform fulfillment ofthe selected cloud service(s), using either the indirect or directfulfillment techniques discussed above.

The search and rank feature is discussed in further detail below. Thesearch UI (presented at 322) can present a unified view of searchcriteria to the user. The view can allow the user to first select aresource type (e.g. server or other type of resource), and once theresource type is selected, the view can present the “searchable”attributes for the resource type. For example, if the user selects aserver as the resource type, then the UI presents the user withsearchable attributes for the server.

In some examples, the searchable attributes can be divided into thefollowing groups, to allow the user to specify search criteria forofferings and/or service providers. In some implementations, thesearchable attributes can include functional attributes, operationalattributes, and non-functional attributes as discussed above. Functionaland non-functional can be tied to both offerings and service providers.For example user can specify the size of a storage device (offeringattribute) and that a service provider should be certified (serviceprovider attribute). In addition, a user may specify price and dates.Service provider attributes can be derived from the registration processof the service providers.

In other implementations, the searchable attributes can be defined asfollows. A first group of attributes includes deployment attributes thatrelate to the type of resource, such as CPU, memory, etc. on which acloud service can be provided. A second group of attributes includesspatial attributes, such as a geographic location of deployment, ajurisdiction of a service provider, and so forth. A third group ofattributes includes SLA attributes, such as performance, uptime, and soforth. A fourth group of attributes includes pricing attributes relatingto a price of a resource. In further examples, additional or alternativegroups of attributes can be provided.

A user can select one or multiple attributes, and related value(s), andcan associate priorities with each selected attribute.

Once the search data (including selected attributes and priorities, forexample) is received through the search UI, the search data is passed tothe task (324) of performing search and rank.

Prior to performing the search and rank, the search data can benormalized or otherwise preconditioned. A search on available offeringsfrom the aggregate catalog is performed to produce search results. Basedon matched attributes and priorities assigned to respective attributes,a ranking of the individual items of the search results can beperformed. The rank assigned to each item of the search results caninclude a number in a sequence of numbers, where successive numbersindicate different ranks. Other rank values can be used in otherexamples.

Next, the rank value (e.g. number) for each item of the search resultscan be normalized, such as to a scale of 100 or other specified value.For example, a value of 100 can reflect an exact match. It may bepossible for the normalized rank value to exceed 100, such as where anitem of the search results has more features than the user asked for.The rank of an item in the search results that has less than exact matchis normalized to a value less than 100 in this example, indicating thatthis item has less features than what the user asked for. Thenormalization can be performed on a sliding scale, with 100 (or someother specified value) selected to indicate an exact match.

The items of the search results can be sorted based on the normalizedrank values. An item (or items) having a normalized rank valueindicating an exact match can be listed first, followed by item(s) witha normalized rank value exceeding the specified value (e.g. 100), andthen followed by item(s) with a normalized rank value less than thespecified value (e.g. 100).

The sorted items of the search results can be output at 326 in FIG. 3.

As noted above, since the search and rank tasks can be computationalintensive, such search and rank tasks can be executed on a separateserver computer (or server computers) 325, or more generally, separateprocessing and storage resources. If there are multiple concurrentrequests from multiple customers at the marketplace system 200, then thesearch server computers 325 can perform concurrent processing, to allowfor scalability in response to increase in requested workload.

As noted above, the search results presented to the user can becomeeventually consistent. For example, the user may initially be presentedwith the raw search results (i.e. un-ranked). The search server(s) 325can present search result items (initially raw search results) as theyare identified to the user. However, as the ranking is applied to thesearch result items, the order in which the search result items arepresented can be changed and sorted based on normalized rank values asdiscussed above. The re-sorting of the search result items can beautomatically updated as the normalized rank values become available.The search results presented can be modified to take into account therankings, such that the search results become eventually consistent. Inthis manner, the search results can be returned to a user relativelyquickly, and the search results can be dynamically updated as the searchand rank function fine tunes the search result set.

FIG. 4 is a block diagram of an example system 400 according to someimplementations. The system 400 can be the marketplace system 200discussed above, or alternatively, the system 400 can be different fromthe marketplace system 200. The system 400 includes a processor (ormultiple processors) 402. A processor can include a microprocessor, acore of a multi-core microprocessor, a microcontroller, a programmablegate array (PGA), an application specific integrated circuit (ASIC)device, or another processing hardware.

The processor(s) 402 can execute catalog aggregation instructions 404(e.g. instructions of the catalog aggregation engine 208) to dynamicallydiscover individual catalogs of service providers, and to aggregate thediscovered individual catalogs into an aggregate catalog, andfulfillment instructions 406 (e.g. instructions of the fulfillmentengine 210) to fulfill a request for a cloud service, the request forthe cloud service received from a requester. The catalog aggregationinstructions 404 can receive a new catalog of a service provider, andaggregate the new catalog into the aggregate catalog. The catalogaggregation instructions 404 can also receive registration of a catalogof a service provider (such as during registration of the serviceprovider as part of onboarding), and aggregate the registered cataloginto the aggregate catalog.

FIG. 5 is a block diagram of a further example of the marketplace system200 that includes a non-transitory machine-readable or computer-readablestorage medium (or storage media) 502. The storage medium (or storagemedia) 502 can store various machine-readable instructions that areexecutable in the marketplace system 200 to perform respective tasks.

For example, the machine-readable instructions can include existingmarketplace catalog providing instructions 504 that provide an existingmarketplace catalog that includes contents of individual catalogs ofmultiple service providers.

The machine-readable instructions further include catalog aggregatinginstructions 506 to, in response to onboarding of a new serviceprovider, aggregate a content of an individual catalog of the newservice provider into the existing marketplace catalog.

The machine-readable instructions further include portal instructions508 to present, through a portal, information about cloud servicesoffered by service providers including the multiple service providersand the new service provider, where the information is based on themarketplace catalog. The portal instructions 508 also receive, throughthe portal from a requester, a request including at least one searchcriterion for cloud services.

The machine-readable instructions further include search instructions510 to perform a search in response to the request to identify at leastone cloud service based on the at least one search criterion of therequest. The machine-readable instructions further include fulfillmentinstructions 512 to cause fulfillment of the identified at least onecloud service.

A storage medium (or storage media) can include one or multipledifferent forms of memory including semiconductor memory devices such asdynamic or static random access memories (DRAMs or SRAMs), erasable andprogrammable read-only memories (EPROMs), electrically erasable andprogrammable read-only memories (EEPROMs) and flash memories; magneticdisks such as fixed, floppy and removable disks; other magnetic mediaincluding tape; optical media such as compact disks (CDs) or digitalvideo disks (DVDs); or other types of storage devices. Note that theinstructions discussed above can be provided on one computer-readable ormachine-readable storage medium, or alternatively, can be provided onmultiple computer-readable or machine-readable storage media distributedin a large system having possibly plural nodes. Such computer-readableor machine-readable storage medium or media is (are) considered to bepart of an article (or article of manufacture). An article or article ofmanufacture can refer to any manufactured single component or multiplecomponents. The storage medium or media can be located either in themachine running the machine-readable instructions, or located at aremote site from which machine-readable instructions can be downloadedover a network for execution.

In the foregoing description, numerous details are set forth to providean understanding of the subject disclosed herein. However,implementations may be practiced without some of these details. Otherimplementations may include modifications and variations from thedetails discussed above. It is intended that the appended claims coversuch modifications and variations.

What is claimed is:
 1. A method comprising: receiving, by a marketplacesystem, information from a plurality of service providers as part ofonboarding of the plurality of service providers with the marketplacesystem; responsive to the onboarding, synchronizing a cloud servicecreated by the respective service provider with the marketplace system;linking a marketplace catalog with catalogs of the plurality of serviceproviders, the linking comprising aggregating content of the catalogsinto the marketplace catalog, the catalogs describing respective cloudservices offered by the service providers, the marketplace catalogcomprising metadata based on tags of the cloud services offered by theservice providers; responsive to a request from a requester receivedthrough a portal of the marketplace system, identifying, using themarketplace catalog and based on at least one search criterion of therequest, at least one cloud service provided by a given service providerof the plurality of service providers; and causing fulfillment of therequest, the fulfillment comprising provisioning, to the requester,resources of the identified at least one cloud service.
 2. The method ofclaim 1, further comprising: responsive to the onboarding of theplurality of service providers, downloading a package to each respectiveservice provider of the plurality of service providers, the package tocreate and synchronize the cloud service of the respective serviceprovider with the marketplace system.
 3. The method of claim 1, whereincausing the fulfillment of the request comprises redirecting therequester to a portal of a given service provider of the identified atleast one offering so that the given service provider can fulfill therequest.
 4. The method of claim 1, wherein causing the fulfillment ofthe request comprises performing direct fulfillment of the request bythe marketplace system on behalf of a given service provider of theidentified at least one offering.
 5. The method of claim 4, whereinperforming the direct fulfillment of the request by the marketplacesystem on behalf of the given service provider of the identified atleast one offering is based on using an application programminginterface (API) of the given service provider accessible by themarketplace system.
 6. The method of claim 1, further comprising:providing, by the marketplace system to the plurality of serviceproviders, information relating to a data model; and receiving, by themarketplace system from the plurality of service providers, offeringsrelated to the cloud services, the received offerings based on the datamodel.
 7. The method of claim 6, wherein the data model comprises aplurality of attributes, the method further comprising: using theplurality of attributes of the data model in searching the marketplacecatalog for cloud services that match the at least one criterion of therequest from the requester, and ranking the cloud services that matchthe at least one criterion.
 8. The method of claim 7, wherein theplurality of attributes of the data model comprise attributes selectedfrom among a fulfillment attribute relating to resources for the cloudservices offered by a respective service provider, a spatial attributerelating to a location of the resources, a service level attributerelating to a service level agreement or a capacity of the cloudservices offered by the respective service provider, an attributeregarding a location or jurisdiction of the respective service provider,and a policy attribute relating to a policy of the respective serviceprovider.
 9. The method of claim 6, further comprising: in response to achange of the data model to a new version, providing, by the marketplacesystem to the plurality of service providers, information relating tothe new version of the data model; and receiving, by the marketplacesystem from the plurality of service providers, updated offeringscomprising the cloud services, the updated offerings based on the newversion of the data model.
 10. The method of claim 9, wherein thepackage downloaded to each respective service provider of the pluralityof service providers causes creation of a service controller at aplatform of the respective service provider to provision and managecloud services further comprising: updating the metadata of themarketplace catalog responsive to the updated offerings.
 11. The methodof claim 6, wherein providing the information comprises sending, to theplurality of service providers, templates based on the data model tocause the service providers to provide cloud services based on thetemplates, wherein the plurality of service providers share a same setof templates.
 12. The method of claim 6, wherein receiving the offeringscomprises receiving, by the marketplace system from each respectiveservice provider of the plurality of service providers, an abstractoffering including information relating to a capability of a respectivecloud service offered by the respective service provider, and a pointerto the respective cloud service; and in response to the request beingfor a given cloud service, redirecting, by the marketplace system, therequester to the pointer to fulfill the request.
 13. The method of claim6, wherein the data model is to provide an attribute of a new cloudservice, or to update an attribute of an existing cloud service.
 14. Themethod of claim 1, further comprising: ranking cloud services identifiedby a search performed in response to the request, the ranking usinguser-selected attributes and priorities assigned to the user-selectedattributes, wherein the searching and the ranking are performed byinvoking a separate search server computer that is dynamically added tothe marketplace system.
 15. The method of claim 14, wherein the invokedseparate search server computer is to provide search results in responseto the request that eventually become consistent.
 16. The method ofclaim 1, further comprising onboarding, at the marketplace system,customers of the marketplace system.
 17. The method of claim 1, whereinthe onboarding of the plurality of service providers comprises:receiving, by the marketplace system, requests to sign up the pluralityof service providers; receiving, by the marketplace system, informationof the plurality of service providers; and providing, by the marketplacesystem, an indication of whether or not each respective service providerof the plurality of service of providers has been approved based on thereceived information.
 18. A system comprising: at least one processor;catalog aggregation instructions executable on the at least oneprocessor to: discover individual catalogs of service providers, theindividual catalogs describing respective cloud services offered by theservice providers, and aggregate the discovered individual catalogs fromthe service providers into an aggregate catalog; and fulfillmentinstructions executable on the at least one processor to fulfill arequest for a cloud service using the aggregate catalog, the request forthe cloud service received from a requester.
 19. The system of claim 18,wherein the catalog aggregation instructions are executable on the atleast one processor to: receive a new catalog of a service provider, andaggregate the new catalog into the aggregate catalog.
 20. The system ofclaim 18, wherein the catalog aggregation instructions are executableto: receive registration of a catalog of a service provider, andaggregate the registered catalog into the aggregate catalog.
 21. Anarticle comprising at least one non-transitory machine-readable storagemedium storing instructions that upon execution cause a marketplacesystem to: provide an existing marketplace catalog that includescontents of individual catalogs of a plurality of service providers; inresponse to onboarding of a new service provider, aggregate a content ofan individual catalog of the new service provider into the existingmarketplace catalog; present, through a portal, information about cloudservices offered by service providers including the plurality of serviceproviders and the new service provider, the information based on themarketplace catalog; receive, through the portal from a requester, arequest including at least one search criterion for cloud services;perform a search in response to the request to identify at least onecloud service based on the at least one search criterion of the request;and cause fulfillment of the identified at least one cloud service. 22.The article of claim 21, wherein the searching is performed using atleast one of plug-in search server computers that provide scalablesearch in response to requests from requesters.